package base.collection_demo.demo02;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * 斗地主综合案例
 * 1.准备牌
 * 2.洗牌
 * 3.发牌
 * 4.看牌
 *
 */
public class Client {

    public static void main(String[] args) {
        /**
         * 1. 准备牌
         */
        // 准备一个存储54张牌的ArrayList集合
        List<String> poker = new ArrayList<>();
        // 定义两个数组,分别存放花色,纸牌号
        String[] colors = {"♥","♠","♣","♦"};
        String[] numbers = {"2","A","K","Q","J","10","9","8","7","6","5","4","3"};
        // 先把大王和小王存储到poker集合中
        poker.add("大王");
        poker.add("小王");
        // 循环遍历两个数组,组装52张牌
        for (String color : colors) {
            for (String number : numbers) {
//                System.out.println(color+number);
                // 把组装好的牌存储到poker集合中
                poker.add(color+number);
            }
        }
//        System.out.println(poker);
        /**
         * 2. 洗牌
         */
        Collections.shuffle(poker);
//        System.out.println(poker);

        /**
         * 3. 发牌
         */
        // 定义4个集合存储3个玩家和底牌
        List<String> ldh = new ArrayList<>();
        List<String> zrf = new ArrayList<>();
        List<String> zxc = new ArrayList<>();
        List<String> dipai = new ArrayList<>();

        /*
         * 遍历poker集合,获取每一张牌.
         * 使用poker集合的索引%3给3个玩家轮流发牌,剩余3张给底牌.
         * 注意:先判断底牌(i>=51),否则就没牌了
         */
        for (int i = 0; i < poker.size(); i++) {
            String s = poker.get(i);
            if(i>=51){
                dipai.add(s);
            }else if(i%3==0){
                ldh.add(s);
            }else if(i%3==1){
                zrf.add(s);
            }else {
                zxc.add(s);
            }
        }

        /**
         * 4. 看牌
         */
        System.out.println("刘德华:"+ldh);
        System.out.println("周润发:"+zrf);
        System.out.println("周星驰:"+zxc);
        System.out.println("底牌:"+dipai);

    }
}
